import fs from 'fs';
import path from 'path';

// 要处理的文件扩展名
const FILE_EXTENSIONS = ['.js', '.vue'];

// 要跳过的目录
const SKIP_DIRS = ['node_modules', '.git', 'dist', 'build', 'public', 'nginx', 'okeedesign-mobile-vue'];

// 匹配文件头注释的正则表达式
const HEADER_COMMENT_REGEX = /^\/\*[\s\S]*?\*\/\s*/;

/**
 * 递归遍历目录并处理文件
 */
function processDirectory(directory) {
  try {
    const entries = fs.readdirSync(directory);
    
    entries.forEach(entry => {
      const fullPath = path.join(directory, entry);
      const stat = fs.statSync(fullPath);
      
      // 跳过指定的目录
      if (stat.isDirectory()) {
        if (!SKIP_DIRS.includes(entry)) {
          processDirectory(fullPath);
        }
        return;
      }
      
      // 处理指定扩展名的文件
      if (FILE_EXTENSIONS.some(ext => fullPath.endsWith(ext))) {
        processFile(fullPath);
      }
    });
  } catch (error) {
    console.error(`处理目录 ${directory} 时出错:`, error);
  }
}

/**
 * 处理单个文件，移除文件头注释
 */
function processFile(filePath) {
  try {
    const content = fs.readFileSync(filePath, 'utf8');
    const newContent = content.replace(HEADER_COMMENT_REGEX, '');
    
    // 只有当内容发生变化时才写入文件
    if (content !== newContent) {
      fs.writeFileSync(filePath, newContent, 'utf8');
      console.log(`已移除 ${filePath} 的文件头注释`);
    }
  } catch (error) {
    console.error(`处理文件 ${filePath} 时出错:`, error);
  }
}

// 开始处理当前目录
console.log('开始移除文件头注释...');
processDirectory(process.cwd());
console.log('文件头注释移除完成！');